package union;

/**
 * @Author: LDeng
 * @Date: 2021-03-31 13:49
 */
public class UnionFind_QF extends UnionFind {

    public UnionFind_QF(int capacity) {
        super(capacity);
    }

    //查找v所属的集合（根节点）
    public int find(int v){
        rangeCheck(v);
        return parents[v];
    }


    //合并v1,v2所在的集合
    //将v1集合的所有元素的父节点都改成v2元素的父节点
    public void union(int v1,int v2){
        int p1=find(v1);
        int p2=find(v2);
        if(p1==p2) return;
        for (int i = 0; i < parents.length; i++) {
            if(parents[i]==p1){
                parents[i]=parents[p2];
            }
        }
    }
}
